#基础数据类型有int,float,str,bool
#复合数据类型有list,tuple,dict,set

#1、列表list
#1.1、列表是用中括号定义的一组数据
# lst=[50, 5.6, True, 'Python']
# print(lst)
# print(type(lst))

#1.2、列表使用下标|索引|index来访问列表中的元素
    #下标从左往右数是0,1,2...n-1
    #下标从右往左数是-1,-2,-3...-n
# lst=[50, 5.6, True, 'Python']
# print(lst[0],lst[3])
# print(lst[-4],lst[-1])
#     #下标如果不存在会报错  IndexError:list index out of range
# lst=[50, 5.6, True, 'Python']
# print(lst[4])

#1.3、列表切片
    #列表名[开始下标:结束下标:步长]
    #结束下标是不包含的
    #切片只是查询列表，不会改变列表
# lst=[10,20,30,40,50,60,70,80,90]
# print(lst[4:7:1])
# print(lst)
#     # 步长的意思是，每隔几个元素取1次
# lst=[10,20,30,40,50,60,70,80,90]
# print(lst[0:4:2])
# print(lst[0:7:3])
# print(lst[1:8:3])
# print(lst[-1:-4:-1])
#     # 开始下标默认从0开始
#     # 结束下标默认取完整个列表
#     # 步长默认是1
# lst=[10,20,30,40,50,60,70,80,90]
# print(lst[:4:1])    #默认从0开始
# print(lst[4::1])    #默认到8结束
# print(lst[1:4:])    #默认步长为1
# print(lst[::3])

#1.4、列表查询函数
# lst=[98,88,66,55,43,71,25,99,101]
# print(len(lst))     #len()获取列表的长度，元素的个数
# print(max(lst))     #max()获取列表的最大值
# print(min(lst))     #min()
# print(sum(lst))     #sum()求和
# print(sorted(lst))  #sorted()从小到大排序
# print(lst)          #以上函数都只是查询列表，不改变列表

#1.5、列表新增元素的函数
    #append和insert会改变列表
# lst=[98,88,66,55,43,71,25,99,101]
# lst.append(360)         #append(n)在列表的尾部添加元素n
# print(lst)
# lst.insert(1,10)        #insert(m,n)在列表lst[m]的前面插入元素n
# print(lst)

#1.6、列表删除函数
# lst=[98,88,66,55,43,55,25,99,55]
# lst.remove(55)          #remove(n)删除元素n，只删除第1个，按值删除元素
# print(lst)
# lst.pop(-1)             #pop(n)删除元素lst[n]，按下标删除元素
# print(lst)
# lst.clear()             #clear()删除元素所有的元素
# print(lst)

#1.7、列表的修改
# lst=[98,88,66,55,43,71,25,99,101]
# lst[0]=22                 #修改列表的元素，直接赋值替换就可以了
# print(lst)
#
# lst=[98,88,66,55,43,71,25,99,101]
# lst.reverse()             #reverse()翻转列表
# print(lst)
#
# lst=[98,88,66,55,43,71,25,99,101]
# lst.sort()                #sort()把列表从小到大排列
# print(lst)
# lst.sort(reverse=True)    #sort(reverse=True)把列表从大到小排列
# print(lst)

#=========================分割线===============================
#2、元组tuple
# #2.1、元组是用小括号定义的一组数据
# tup=(11,55,33,44,22)
# print(tup,type(tup))
# #2.2、元组也用下标获取元素
# tup=(11,55,33,44,22)
# print(tup[0],tup[4])
# print(tup[-5],tup[-1])
# #2.3、元组也能切片
# tup=(11,55,33,44,22)
# print(tup[::2])
# #2.4、元组也能用max,min,sum,len,sorted等查询函数
# tup=(11,55,33,44,22)
# print(sorted(tup))
# #2.5、元组在被定义后就是固定的，不允许被修改！！！
# tup=(11,55,33,44,22)
# tup.remove(11)

#=========================分割线===============================
#3、字典dict
# 3.1、字典是用大括号定义的一组键值对 key-value
# dic={"empno":"7839", "ename":"smith", "job":"clerk"}
# print(dic,type(dic))
# #3.2、字典的键是不允许重复的
# dic={"empno":"7839", "ename":"smith", "job":"clerk","job":"manager"}
# print(dic)
#3.3、字典是用键名取值，字典没有下标
# dic={"empno":"7839", "ename":"smith", "job":"clerk"}
# print(dic['ename'])
# print(dic[1])
#3.4、字典的查看
# dic={"empno":"7839", "ename":"smith", "job":"clerk"}
# print(dic.keys())       #keys()取键
# print(dic.values())     #values()取值
# print(dic.items())      #items()取键值对
# 3.5、字典添加键
# dic={"empno":"7839", "ename":"smith", "job":"clerk"}
# dic['deptno']=10        #直接赋值，就可以往字典中添加键值对
# print(dic)
#3.6 字典删除键
# dic={"empno":"7839", "ename":"smith", "job":"clerk"}
# del dic['job']      #删除job键
# print(dic)
# dic.clear()         #clear()清空字典
# print(dic)


练习：输入年year，输入月month，输出"year年month月有day天"
    需要注意的是闰年的2月有29天
    闰年：year能被4整除并且不能被100整除，或者能被400整除
    例如输入2024和2，输出"2024年2月有29天"
    例如输入2025和2，输出"2025年2月有28天"
    例如输入2024和1，输出"2024年1月有31天"
    例如输入2024和11，输出"2024年11月有30天"
用字典做
day= {1:31, 2:28, 3:31, 4:30, 5:31, 6:30, 7:31, 8:31, 9:30, 10:31, 11:30, 12:31}
year=int(input("请输入年："))
month=int(input("请输入月："))
if year%4==0 and year%100!=0 or year%400==0:
    day[2]=29
print(f'{year}年{month}月有{day[month]}天')

用列表做
day=[0,31,28,31,30,31,30,31,31,30,31,30,31]     #定义一个列表，下标当月份，值当月对应的天数
year=int(input("请输入年："))
month=int(input("请输入月："))
if year%4==0 and year%100!=0 or year%400==0:
    day[2]=29
print(f'{year}年{month}月有{day[month]}天')

#=========================分割线===============================
#4、集合set
#4.1、集合是用大括号定义的一组数据
#4.2、集合没有下标，不能定向取值
#4.3、集合内的元素不允许重复
# s = {1,3,5,2,4,1}
# print(s,type(s))
# print(s[0])     #报错

#练习：给定列表['a','b','c','d','a','c','b','e','x','c']
    #要求给列表去重
# lst=['a','b','c','d','a','c','b','e','x','c']
# t=set(lst)  #将列表转化为集合
# lst=list(t) #将集合转化为列表
# print(lst)